package com.jpro.module.bpm.api.task.rpc;

import com.jpro.framework.common.pojo.CommonResult;
import com.jpro.framework.common.pojo.PageParam;
import com.jpro.framework.common.pojo.PageResult;
import com.jpro.module.bpm.api.task.enums.ApiConstants;
import com.jpro.module.bpm.api.task.vo.BpmTaskApproveReqVO;
import com.jpro.module.bpm.api.task.vo.BpmTaskRejectReqVO;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import javax.validation.Valid;

/**
 * 流程任务 Api 接口
 *
 * @author jprocms
 */
@FeignClient(name = ApiConstants.NAME)
@Tag(name = "RPC 服务 - 工作流")
public interface BpmTaskApi {

    /**
     * 创建流程实例（提供给外部）
     *
     * @param userId 用户编号
     * @param reqDTO 创建信息
     * @return 实例的编号
     */

    String PREFIX = ApiConstants.PREFIX + "/task";

    @PostMapping("/approve")
    CommonResult<Boolean> approveTask(@Valid @RequestBody BpmTaskApproveReqVO reqVO);

    @PostMapping("/reject")
    CommonResult<Boolean> rejectTask(@Valid @RequestBody BpmTaskRejectReqVO reqVO);

    /**
     * 待办内容分页
     *
     * @return
     */
    @PostMapping("/getTodoContentIdPage")
    CommonResult<PageResult<Long>> getTodoContentIdPage(PageParam pageVO);
}
